iT邦幫忙

2021 iThome 鐵人賽

DAY 17
0
Modern Web

自動化 End-End 測試 Nightwatch.js系列 第 17

自動化 End-End 測試 Nightwatch.js 之踩雷筆記:關閉多視窗

  • 分享至 

  • xImage
  •  

昨天利用了 window.open 可以開啟新分頁或視窗,今天則是來關閉多個視窗。

Nightwatch 本身其實就有 .closeWindow() 了,不過如果我們已經開啟多個視窗時,需要一個一個關掉時:

  1. 利用 windowHandles 檢查目前共有哪些視窗
  2. 透過 switchWindow 切換視窗
  3. closeWindow 關閉視窗

不過避免全部都被關掉,因為會先確定視窗數,並於最後切回原本的視窗

this.windowHandles(function(result) {
    if (result.value.length && result.value.length > 1) {
      for (let i = 1; i < result.value.length; i++) {
        this
          .switchWindow(result.value[i])
          .closeWindow()
          .acceptAlert();
      }
      this.switchWindow(result.value[0]);
    }
}

如果遇到跳出警告:

https://ithelp.ithome.com.tw/upload/images/20211002/20120250fZQZaUGV8d.png

則可以使用 Nightwatch 中的 acceptAlert()/dismissAlert() 來解決。

可惜這不是可以跨瀏覽器使用的指令,在 Safari 中,這會被視為 unknow command

因次需要利用 Javascript 中 window.onbeforeunload 並設為 null

browser.execute('window.onbeforeunload = null');

上一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:開啟新視窗
下一篇
自動化 End-End 測試 Nightwatch.js 之踩雷筆記:iframe
系列文
自動化 End-End 測試 Nightwatch.js30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言